/**
 * 
 */
package br.com.skynix.tcmc.model.financeiro;

import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import org.hibernate.annotations.ForeignKey;

import br.com.skynix.tcmc.base.model.EntidadeDominio;
import br.com.skynix.tcmc.model.rh.Empresa;
import br.com.skynix.tcmc.model.rh.Funcionario;

/**
 * @author davi
 * 
 */
@Entity
@Table(name = "tb_estrutura_salario")
public class EstruturaSalario extends EntidadeDominio {
	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_empresa_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK001_estrutura_salario")
	private Empresa empresa;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_categoria_folha_pagamento_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK002_estrutura_salario")
	private CategoriaFolhaPagamento categoriaFolhaPagamento;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_funcionario_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK003_estrutura_salario")
	private Funcionario funcionario;

	@NotNull
	@Column(nullable = false, precision = 15, scale = 2)
	private BigDecimal valor;

	/**
	 * @return the empresa
	 */
	public Empresa getEmpresa() {
		return empresa;
	}

	/**
	 * @param empresa the empresa to set
	 */
	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	/**
	 * @return the categoriaFolhaPagamento
	 */
	public CategoriaFolhaPagamento getCategoriaFolhaPagamento() {
		return categoriaFolhaPagamento;
	}

	/**
	 * @param categoriaFolhaPagamento the categoriaFolhaPagamento to set
	 */
	public void setCategoriaFolhaPagamento(
			CategoriaFolhaPagamento categoriaFolhaPagamento) {
		this.categoriaFolhaPagamento = categoriaFolhaPagamento;
	}

	/**
	 * @return the funcionario
	 */
	public Funcionario getFuncionario() {
		return funcionario;
	}

	/**
	 * @param funcionario the funcionario to set
	 */
	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	/**
	 * @return the valor
	 */
	public BigDecimal getValor() {
		return valor;
	}

	/**
	 * @param valor the valor to set
	 */
	public void setValor(BigDecimal valor) {
		this.valor = valor;
	}
}
